package com.qdlc.p2p.biz.service;

import java.util.List;

import com.qdlc.p2p.dal.common.model.jpa.PageDataList;
import com.qdlc.p2p.dal.dto.WineCoupons;
import com.qdlc.p2p.dal.model.WineCouponsModel;

/**
 * 酒券方案Service接口
 *
 * @author ygw
 * @version 1.1.0.0
 * @date 2016年5月6日 下午3:08:27
 */
public interface WineCouponsService {
    /**
     * 保存酒券方案
     *
     * @param model WineCouponsModel
     * @return WineCoupons
     */
    WineCoupons save(WineCouponsModel model);

    /**
     * 查询酒券方案
     *
     * @param id 主键ID
     * @return WineCoupons
     */
    WineCoupons getWineCouponsById(long id);

    /**
     * 查询所有已开启的酒券方案
     *
     * @return List<WineCoupons>
     */
    List<WineCoupons> findUsableWineCoupons();

    /**
     * 查询所有已开启的固定金额酒券方案
     *
     * @return List<WineCoupons>
     */
    List<WineCoupons> findUsableWineCouponsForFixed();

    /**
     * 分页查询酒券方案
     *
     * @param model WineCouponsModel
     * @return PageDataList<WineCouponsModel>
     */
    PageDataList<WineCouponsModel> list(WineCouponsModel model);

    /**
     * 修改酒券方案
     *
     * @param model WineCouponsModel
     * @return WineCoupons
     */
    WineCoupons update(WineCouponsModel model);

    /**
     * 删除酒券方案(伪删除），将酒券方案是否删除状态置为删除
     *
     * @param id 酒券方案主键ID
     */
    void delete(long id);

    /**
     * 修改酒券状态
     *
     * @param WineCouponsIds 酒券IDS
     * @param aftStatus      修改后状态
     * @param preStatus      前状态
     * @return
     */
    int changeStatus(byte status, byte prestatus, long id);
}
